package org.example.journal.FacedMode;


/**
 *  门面模式
 *  又称为外观模式，提供了一个更高层次的接口可以用来调用子系统中的一群接口，让子系统的接口更易于使用
 *  分为俩角色，门面对象和子系统角色，门面对象用来封装 子系统角色提供的接口
 *  减少了系统之间的联系，这样子系统的改变不会对客户端的调用有影响，提高了灵活性，这样客户端只需要和
 *  门面对象交互即可，不必关心具体实现，提高了安全性，不在门面对象中的方法就无法访问，也简化了客户端的操作
 */
//门面模式的实现 可以通过一个接口来实现对一些接口的统一操作，比如统一开关灯
public class faced {
    light1 light1 = new light1();
    light2 light2 = new light2();
    light3 light3 = new light3();
    light4 light4 = new light4();

    public void openAll() {
        light1.L1Open();
        light2.L1Open();
        light3.L3Open();
        light4.L4Open();
    }

    public void closeAll() {
        light1.L1Close();
        light2.L1Close();
        light3.L3Close();
        light4.L4Close();
    }
}

class light1{
    public void L1Open() {
        System.out.println("l1Open");
    }
    public void L1Close() {
        System.out.println("l1Close");
    }
}
class light2{
    public void L1Open() {
        System.out.println("l2Open");
    }
    public void L1Close() {
        System.out.println("l2Close");
    }
}
class light3{
    public void L3Open() {
        System.out.println("l3Open");
    }
    public void L3Close() {
        System.out.println("l3Close");
    }
}
class light4{
    public void L4Open() {
        System.out.println("l4Open");
    }
    public void L4Close() {
        System.out.println("l4Close");
    }
}



